#include <config.h>
#include "defs.h"
inherit ROOM_OBJ;

object button, bookcase, board;

void setup() {
/* the short description is what you get in a room in brief mode.
 * use capital letters for proper names only and don't put a period 
 * at the end, since the short can be used to construct sentences
 */
  set_short("workroom of "+ CREATOR);
/* the determinate is put in front of the short. 
 * if you don't specify it, "a " or "an " will be used automatically. 
 * see help setup
 */
  add_property( "determinate", "the ");
/* you set this so you can see in the room.
 * for a description of light levels and what they mean type
 * help light
 */
  set_light(100);
/*
 * and when you work into a room in verbose mode.
 * remember to put two spaces after periods, and uses proper
 * capitalization, punctuation and spelling.
 */
  set_long("This is the workroom of "+CAP(CREATOR)+".  You can see a small wooden "
           "desk sulking in the corner of the room, it has a beautifully "
           "carved wooden rolly chair in front of it.  It looks like this "
           "was just newly created, there is a smell of paint and "
           "leather in the air.\n");
/* The items are the things in the room that you can look at.
 * Item longs should be proper sentences and shouldn't have \n at the end.
 * Make sure you have a room item for every noun described in the long
 * of the room or in the long of another room item. */
  add_item("chair", "The teak rolly chair has amazing carvings of dragons and "
                    "... other things on it.  They almost seem alive, "
                    "you especialy don't note the way the dragon "
                    "blinks at you." );
  add_item("desk", "The desk is made of mahogany with a touch of "
                   "mountain ash.  The top has two little basket things "
                   "on it labeled \"in\" and \"out\".  The in basket "
                   "is rather small." );
  add_item( "dragon", "I told you, you don't notice it winking at you." );
  add_item("in basket", "The in basket is full of small yellow forms "
                        "with large red letters on them saying "
                        "\"Important read me first\" and then not "
                        "appearing to actually have any thing else on "
                        "them." );
  add_item( "out basket", "The out basket is completely empty." );
  add_item("basket", "There are two baskets sitting on top of the desk.  "
                     "They have the words \"in\" and \"out\" written "
                     "on them." );
  add_item("paint", "You look around to see the source of the paint "
                    "smell and you can't find it.  The walls? of the room "
                    "ummm seem to be well shall we just twisting in a "
                    "confused mish mash of shapes, you are sure they are "
                    "not threatening." );
  add_item("wall", "The walls are made up of a cloudy substance, white "
                   "in nature that is roiling around the place where "
                   "you are standing.  Great magic must be holding it "
                   "back, every now and then you see a demonic head "
                   "push its way out of the cloud roll its eyes and fade "
                   "back into the cloud." );
  add_item("cloud", "The cloud is white coloured with a few flashes "
                    "of light bursting in it." );
  add_item("demon", "The demonic heads that pop out are pretty nasty "
                    "looking, they disapear with a snarl of strain." );

/* adds all the exits to the room.
 * the first parameter is the verb used to get through the exit.
 * the second is where to go once that exit is opened.
 * and the third is the type of the exit.  For a better desription of
 * this read the docs on rooms.
 * 
 * remember not to put ".c" at the end of the second parameter
 */
  add_exit("common", "/w/common", "door");
  add_exit("pub", CONFIG_START_LOCATION, "path");
  add_exit("learning", "/d/learning/main", "path");

/* these two add_alias alias the exits.  Now when you type north (or n)
 * you will go to the starting location and south to the common room
 */
  add_alias("north", "pub");
  add_alias("south", "common");
/* this adds an exit in the common room back to your workroom 
 */
  "/w/common"->add_exit(CREATOR, "/w/"+CREATOR+"/workroom", "door");
} /* create() */

void reset() {
/* if the button does not exist (it has been dested or it hasn't been
 * created yet the variable is set to 0)  This makes sure you don't get
 * more than one button in your room.
 */
  if (!button) {
    button = clone_object("/obj/misc/button");
    button->move(this_object());
  } 
  if (!board) {
    board = clone_object("/obj/misc/board_mas");
    board->move(this_object() );
  }
  if (!bookcase) {
      /* The first parts of making a shelf it covered elsewhere, it's 
       * basically a matter of cloning the object and make it look like 
       * it should
       */
      bookcase = clone_object("/obj/cont_save");
      bookcase->set_name( "bookcase" );
      bookcase->set_short( "oaken bookcase" );
      bookcase->add_adjective( "wooden" );
      bookcase->add_adjective( "oak" );
      bookcase->add_adjective( "oaken" );
      bookcase->add_property( "there", "standing against the wall" );
      bookcase->set_long( "This bookcase is made from oak and "
            "varnished to bring out the glow.  It has 2 shelves, "
            "upon which you can see some books, and other objects.\n" );
      bookcase->set_weight( 2000 );
      bookcase->set_max_weight( 4000 );
      bookcase->reset_get();
      /* This call will allow the shelf to write the  savefile in the same
       * domain as the room is in, if you don't do this call, the savefile
       * will have to be somewhere in /save/ 
       */
      bookcase->check_euid(); 
      /* This call tells the shelf what file should be used to save the stuff
       * placed on it.
       */
      bookcase->set_save_file( "/w/"+CREATOR+"/creator_kit" );
      /* end by putting the shelf in the room */
      bookcase->move( this_object() );
   }
} /* reset() */


/* This function is used by the button.  It gives a list of things in
 * the room that the button should NOT destroy.
 */
object *query_non_destable()  {
   return ({ bookcase, board });
} /* query_non_destable() */
